﻿using JustMetClient.Commons;
using JustMetClient.Models.ConfigModels;
using JustMetClient.Models.InfoModels;
using JustMetClient.Models.WebApiModels;
using JustMetClient.Modules.LoginModule;
using JustMetClient.Modules.WebModule;
using Azylee.Core.DataUtils.CollectionUtils;
using Azylee.Core.DataUtils.EncryptUtils;
using Azylee.Core.ThreadUtils.SleepUtils;
using Azylee.Core.WindowsUtils.APIUtils;
using Azylee.Core.WindowsUtils.InfoUtils;
using Azylee.YeahWeb.HttpUtils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JustMetClient.Modules.WebConfigModule;
using JustMetClient.Modules.ComputerStatusModule;
using JustMetClient.Utils.InfoUtils;
using JustMetClient.Modules.UpdateModule;

namespace JustMetClient.Modules.PlanTaskModule
{
    public class PlanTaskOnce
    {
        public static void Do()
        {
            //这里延时一下（防止 account 和 mac 为空的情况）
            Sleep.S(10);

            //读取服务器远程配置信息
            WebConfigHelper.Read();


            ////初始化自动登录网络认证
            //if (R.Flag.AutoLogin && LoginHelper.AutoLogin()) R.Toast.AutoShow("提示", "网络认证成功：" + R.Account);

            //发送硬件信息，重试次数10次
            WebApiSendQueue.Add(R.Web.Send.Hardware, HardwareInfoTool.Get(), HttpMethodType.Post, 10);
            //发送软件信息，重试次数10次（10分钟）
            WebApiSendQueue.Add(R.Web.Send.Software, SoftwareInfoTool.Get(), HttpMethodType.Post, 10);
            //发送系统信息，重试次数10次（10分钟）
            WebApiSendQueue.Add(R.Web.Send.SystemInfo, SystemInfoTool.Get(), HttpMethodType.Post, 10);
            //发送共享，重试次数10次（10分钟）
            WebApiSendQueue.Add(R.Web.Send.ShareInfo, ComputerInfoTool.Share(), HttpMethodType.Post, 10);

            UpdateHelper.CleanHistory();//清理版本历史记录
            ComputerStatusMonitor.Start();//启动程序运行期间状态监控

            //阻止计算机息屏和待机
            //SystemSleepAPI.PreventSleep(false);

            //发送MD5功能是否正常监测（仅在2018年7月份开启）
            if (DateTime.Now.Year <= 2018 && DateTime.Now.Month <= 7)
            {
                string abc = "abc";
                string abcmd5 = "900150983cd24fb0d6963f7d28e17f72";
                string rs = MD5Tool.Encrypt(abc).ToLower();
                if (rs.Equals(abcmd5))
                {
                    WebApiSendQueue.Add(R.Web.Send.ClientCollection, new ClientUserDefinedInfoModel()
                    {
                        Type = "Windows平台FIPS验证",
                        Values = ArrayTool.Formatter(new string[] { "已开启", abc, abcmd5, rs }, "", 10),
                    }, HttpMethodType.Post, 10);
                }
                else
                {
                    WebApiSendQueue.Add(R.Web.Send.ClientCollection, new ClientUserDefinedInfoModel()
                    {
                        Type = "Windows平台FIPS验证",
                        Values = ArrayTool.Formatter(new string[] { "未开启", abc, abcmd5, rs }, "", 10),
                    }, HttpMethodType.Post, 10);
                }
            }
        }
    }
}